<?php
	require_once ("LoginModel.php");
	require_once ("Database.php");
	require_once ("Config.php");
	
	echo "<h1>Enhetstester</h1>";
	$testing = new Test();	
	
	echo "<h3><hr/>Test av LoginHandler</h3>";				
	if ($testing->LoginModelTest() == false){
		echo "<br/>Test av LoginHandler misslyckades!";
	} else {
		echo "<br/>Test av LoginHandler lyckades!";
	};
	
	echo "<h3><hr/>Test av Database</h3>";				
	if ($testing->DatabaseTest() == false){
		echo "<br/>Test av Database misslyckades!";
	} else {
		echo "<br/>Test av Database lyckades!";
	};
	
	// Klass för automatiska tester på andra klasser.			
	class Test{
		// Funktion för att testa LoginHandler.
		public function LoginModelTest(){
			// System under test.
			$sut = new LoginModel();		
			$db->Connect($config);
			// Anropar DoLogout för att försätta användaren i utloggat läge.
			$sut->DoLogout();
			// Test av IsLoggedIn funktionen om användaren är utloggad.
			if($sut->IsLoggedIn() == true){
				echo "<br/>IsLoggedIn Test 1. Användaren bör vara utloggad.";
				return false;
			}
			// Test av DoLogin funktionen med felaktiga uppgifter.
			if($sut->DoLogin("Karl", "Gustaf") == true){
				echo "<br/>DoLogin Test 1. Användaren bör inte kunna logga in med fel uppgifter.";
				return false;
			}
			// Test av DoLogin funktionen med rätta uppgifter.
			if($sut->DoLogin("Darth", "Vader") == false){
				echo "<br/>DoLogin Test 2. Användaren bör kunna logga in då uppgifterna stämmer.";
				return false;
			}
			// Test av IsLoggedIn funktionen om användaren är inloggad.
			if($sut->IsLoggedIn() == false){
				echo "<br/>IsLoggedIn Test 2. Användaren bör vara inloggad då uppgifterna stämmer.";
				return false;
			}
			$sut->DoLogout();
			// Test av DoLogin funktionen med rätta användarnamn och fel lösenord.
			if($sut->DoLogin("Jack", "Hack") == true){
				echo "<br/>DoLogin Test 3. Användaren bör inte kunna logga in då lösenordet är fel.";
				return false;
			}
			// Test av IsLoggedout funktionen om användaren är utloggad.
			if($sut->IsLoggedIn() == true){
				echo "<br/>Test av IsLoggedout. Användaren bör nu loggas ut.";
				return false;
			}
			// Alla tester lyckades.			
			return true;
			$db->Close();
		}
		// Funktion för att testa Database.
		public function DatabaseTest(){
			
			$config = new Config();
			$sut = new Database();
			
			if($sut->Connect($config) == false){
				echo "ConnectDB Test 1. Du misslyckades med att ansluta till databasen.";
				return false;
			}
			
			if($sut->Close() == false){
				echo "CloseDB Test 1. Du misslyckades med att stänga anslutningen till databasen.";
				return false;
			}
			// Alla tester lyckades.
			return true;
		}
	}
?>